﻿using System;
using System.Xml.Serialization;

namespace KBEngine.Setting.Internal
{
    [Serializable]
    public class LoginApp
    {
        /// <summary>
        /// 脚本入口模块， 相当于main函数
        /// </summary>
        public string entryScriptFile = "kbemain";

        /// <summary>
        /// 指定接口地址，可配置网卡名、MAC、IP
        /// </summary>
        public string internalInterface = string.Empty;
        public string externalInterface = string.Empty;

        /// <summary>
        /// 强制指定外部IP地址或者域名，在某些网络环境下，可能会使用端口映射的方式来访问局域网内部的KBE服务器，那么KBE在当前
        /// 的机器上获得的外部地址是局域网地址，此时某些功能将会不正常。例如：账号激活邮件中给出的回调地址, 登录baseapp。
        ///	注意：服务端并不会检查这个地址的可用性，因为无法检查。
        /// </summary>
        public string externalAddress = string.Empty;

        public int externalTcpPorts_min = 20013;
        public int externalTcpPorts_max = 0;
        public int externalUdpPorts_min = -1;
        public int externalUdpPorts_max = -1;

        /// <summary>
        /// 加密登录信息
        /// (The encrypted user login information)
        ///  可选择的加密方式(Optional encryption) :
        ///		0: 无加密(No Encryption)
        ///		1: Blowfish
        ///		2: RSA(res\key\kbengine_private.key)
        /// </summary>
        public byte encrypt_login = 2;

        /// <summary>
        /// listen监听队列最大值
        /// </summary>
        [XmlElement("SOMAXCONN")]
        public uint somaxconn = 511;

        /// <summary>
        /// 账号的类型								(Account types)
        ///	1: 普通账号(Normal Account)
        ///	2: email账号(需要激活)                    (Email Account, Note: activation required.)
        ///	3: 智能账号(自动识别Email， 普通号码等)   (Smart Account (Email or Normal, etc.))
        /// </summary>
        public byte account_type = 3;

        /// <summary>
        /// http回调接口，处理认证、密码重置等 
        ///	（注意：http_cbhost一般会被引擎替换为externalInterface或者externalAddress，仅第一个loginapp才会开启这个服务）
        /// </summary>
        public string http_cbhost = "localhost";
        public ushort http_cbport = 21103;

        public TelnetService telnet_service = new TelnetService();
    }
}
